Consumer electronic devices, such as cellular telephones, digital music players, thumb drives and other handheld devices, execute increasingly complicated algorithms, such as algorithms for decoding compressed digital audio and video data and user interface algorithms. As the complexity of these algorithms increases, so does the memory usage for storing such algorithms.
Increasingly, manufacturers are turning to non-volatile memory devices, such as flash memory devices including NAND flash and NOR flash memory devices. Different non-volatile memory devices may operate at different power levels and use different instruction sets. In order to interface with any particular non-volatile memory, a microprocessor or other device may have to provide an output at the proper voltage level and may need to determine an appropriate instruction set for communicating with the particular non-volatile memory.